<?php
require_once dirname(__FILE__) . '/../Storage/diskunit.php';
require_once dirname(__FILE__) . '/Calendar.php';

class マッピング＿ドキュメントカレンダーログレコード extends object {
	public $ドキュメントID;
	public $カレンダーイベントID;
}
class マッピング＿ドキュメントカレンダーログ extends  Binder
{
	const WIKIRIAD_URL = 'http://minder.minibird.jp/life/contents/';
	public function __construct() {
		$保管場所 = dirname ( __FILE__ ) . '/databox';
		if (!file_exists($保管場所)) {
			mkdir($保管場所,0777,TRUE);
		}
		$ストレージ = new Storage_Diskunit('wikiriad', $保管場所);
		parent::__construct('マッピング＿ドキュメントカレンダーログ', $ストレージ, TRUE);
	}
	public function 追加する($ドキュメントID, $カレンダーイベントID = FALSE) {
		$マップレコード = FALSE;
		if ($ドキュメントID instanceof マッピング＿ドキュメントカレンダーログレコード) {
			$マップレコード = $ドキュメントID;
			$ドキュメントID = $マップレコード->ドキュメントID;
			$カレンダーイベントID = $マップレコード->カレンダーイベントID;
		}
		$this->一括削除 ( 'ドキュメントID', $ドキュメントID );
		$this->一括削除 ( 'カレンダーイベントID', $カレンダーイベントID );
		$マップレコード = new マッピング＿ドキュメントカレンダーログレコード ();
		$マップレコード->ドキュメントID = $ドキュメントID;
		$マップレコード->カレンダーイベントID = $カレンダーイベントID;
		$this->bind ( $マップレコード );
	}
	public function 一括削除($プロパティ名, $値)
	{
		foreach ($this->_pages as $key=>$page) {
			if (property_exists($page, $プロパティ名)) {
				if ($page->$プロパティ名 == $値) {
					unset($this->_pages[$key]);
				}
			}
		}
	}
	public function 新規ドキュメント判定($ドキュメントID)
	{
		$検索結果 = $this->selectAgree('ドキュメントID', $ドキュメントID);
		if ($検索結果->get_pagecount() == 0) {
			return TRUE;
		}
		return FALSE;
	}
	public function イベント追加($ドキュメントID, $表題)
	{
		$wikiriadUrl = self::WIKIRIAD_URL . $ドキュメントID;
		$日時 = date('Y-m-d H:00');
		$カレンダー = new Google_Calender('ログイン', 'パスワード');
		$結果 = $カレンダー->対象カレンダー名を指定する('Toodledo');
		if ($結果 === FALSE) {
			return FALSE;
		}
		echo $結果."\n";
		$イベントID = $カレンダー->イベントを追加する($表題, $wikiriadUrl, $日時);
		/*** カレンダー追加エラー */
		if ($イベントID === FALSE) {
			return FALSE;
		}
		$this->追加する($ドキュメントID, (string)$イベントID);
		return TRUE;
	}
	public function イベント更新($ドキュメントID, $表題, $イベントID)
	{
		$カレンダー = new Google_Calender('ログイン', 'パスワード');
		/*** イベント削除判定 */
		if ($カレンダー->編集イベントを設定する($イベントID)===FALSE) {
			return $this->イベント追加($ドキュメントID, $表題);
		}
		$wikiriadUrl = self::WIKIRIAD_URL . $ドキュメントID;
		return $カレンダー->イベントを変更する($表題,$wikiriadUrl, date('Y-m-d H:00'));
	}
}

/*ユニットテストブロック V2*/
if (class_exists('ユニットテストケース')) {
	class ユマッピング＿ドキュメントカレンダーログ_test extends ユニットテストケース
	{
		protected $テストするクラス名='マッピング＿ドキュメントカレンダーログ';
		//ここがテストケースの記載場所
		function test_イベント追加()
		{
			$this->テストクラスインスタンス = new マッピング＿ドキュメントカレンダーログ();
			$this->テストクラスインスタンス->イベント追加('0014.html', 'mantis改造');
		}
		function test_イベント更新()
		{
			$this->テストクラスインスタンス = new マッピング＿ドキュメントカレンダーログ();
			$検索結果 = $this->テストクラスインスタンス->selectAgree('ドキュメントID', '1104.html');
			$イベントID = $検索結果->page(0)->カレンダーイベントID;
			$this->テストクラスインスタンス->イベント更新('0014.html', 'mantis改造②', $イベントID);
		}
	}
}